/**
 * 
 */
package ar.utn.frgp.banco.front.action.reportes;

import java.util.Date;
import java.util.List;

import ar.utn.frgp.banco.entity.Cuenta;
import ar.utn.frgp.banco.entity.Movimientos;
import ar.utn.frgp.banco.exceptions.PersonalisedException;
import ar.utn.frgp.banco.front.action.EBAbstractAction;
import ar.utn.frgp.banco.service.GestionCuentasService;
import ar.utn.frgp.banco.service.ReportesService;

/**
 * @author Administrador
 *
 */
public class Ultimos5MovimientosAction extends EBAbstractAction {

	private static final long serialVersionUID = -7537635974427111058L;
	
	private Date fechaIni;
	private Date fechaFin;
	
	private Long idCuenta;
	
	private List<Cuenta> cuentas;
	
	private List<Movimientos> movimientos;
	
	private GestionCuentasService gestionCuentasService;
	private ReportesService reportesService;




	/* (non-Javadoc)
	 * @see ar.utn.frgp.banco.front.action.EBAbstractAction#execute()
	 */
	@Override
	public String execute() throws PersonalisedException {
		
		if (cuentas == null){
			cuentas = gestionCuentasService.obteneCuentas(getLoggedUser().getDni());
			
			if (cuentas.isEmpty()){
				return NONE;
			}
		}
		
		
		
		try {
			if (idCuenta != null){
				movimientos = reportesService.depositosYExtraccionesEntreFechas(idCuenta, null, null); 
				
				if(movimientos.isEmpty()){
					addActionError("No posee movimientos en la cuenta");
				}
				
			}
			
			setTodayDate(new Date());
			
			return SUCCESS;
		} catch (Exception e) {
			// TODO: handle exception
			addActionError("No posee movimientos en la cuenta");
			return INPUT;
		}
	}
	
	private Date todayDate;

	  public Date getTodayDate() {
	  return todayDate;
	  }

	  public void setTodayDate(Date value) {
	  todayDate = value;
	  }


	public List<Cuenta> getCuentas() {
		return cuentas;
	}


	public void setCuentas(List<Cuenta> cuentas) {
		this.cuentas = cuentas;
	}


	public Long getIdCuenta() {
		return idCuenta;
	}

	public void setIdCuenta(Long idCuenta) {
		this.idCuenta = idCuenta;
	}

	public List<Movimientos> getMovimientos() {
		return movimientos;
	}

	public void setMovimientos(List<Movimientos> movimientos) {
		this.movimientos = movimientos;
	}
	
	public void setReportesService(ReportesService reportesService) {
		this.reportesService = reportesService;
	}
	

	public void setGestionCuentasService(GestionCuentasService gestionCuentasService) {
		this.gestionCuentasService = gestionCuentasService;
	}


	public Date getFechaIni() {
		return fechaIni;
	}


	public void setFechaIni(Date fechaIni) {
		this.fechaIni = fechaIni;
	}


	public Date getFechaFin() {
		return fechaFin;
	}


	public void setFechaFin(Date fechaFin) {
		this.fechaFin = fechaFin;
	}
}
